package Controlador;

import java.awt.Color;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import Modelo.Alumno;
import Vista.VistaEstudiante;
import Vista.principal;

public class CtrlEstudiante extends WindowAdapter implements ActionListener {
//	Vistas
	private VistaEstudiante vistaEst;
	private Alumno Alumno;
	
	//Constructor de la Clase 
	public CtrlEstudiante(VistaEstudiante vEst)
	{
		vistaEst=vEst;
		Alumno = new Alumno();	
		vEst.lblAsterisco1.setVisible(false);
		vEst.lblAsterisco2.setVisible(false);
		//Seccion= new Seccion();
	}
	
	public void actionPerformed(ActionEvent ae) {
		
		if(ae.getSource()== vistaEst.btnSalir)
		{
			int opcion = JOptionPane.showConfirmDialog(new JFrame(),"Desea volver al menu anterior?",
					     "Mensaje de Confirmacion",JOptionPane.YES_NO_OPTION,
					     JOptionPane.QUESTION_MESSAGE);
			if (opcion == JOptionPane.YES_OPTION)
			{
				vistaEst.dispose();
				//System.exit(0);
			}
		}
		if (ae.getSource()== vistaEst.btnLimpiar)
		{
			limpiar();
		}
		if (ae.getSource() == vistaEst.btnRegistrar) {
			//Alumno = new Alumno( vistaEst.txtCedula.getText(),vistaEst.txtNombre.getText(),vistaEst.txtApellido.getText());
			boolean valCar;
			if (validarCampos()){
				valCar=validarCaracteres(vistaEst.txtNombre.getText()+vistaEst.txtApellido.getText());
				if(valCar){
				Alumno Alumno=new Alumno();
				Alumno.setCed(vistaEst.txtCedula.getText());
				Alumno.setNom(vistaEst.txtNombre.getText());
				Alumno.setApe(vistaEst.txtApellido.getText());
				try {
					principal.seccion.inscribirEstudiante(Alumno);
				} catch (IOException e) {
					e.printStackTrace();
				}
				limpiar();
				JOptionPane.showMessageDialog(null, "Estudiante registrado exitosamente", 
						"Informacion del registro", 
						JOptionPane.INFORMATION_MESSAGE);
				}
				else
					JOptionPane.showMessageDialog(null, "Introduzca solo letras", 
							"Informacion del registro", 
							JOptionPane.ERROR_MESSAGE);
			}
			else
				JOptionPane.showMessageDialog(null, "Debe introducir todos los campos.", 
						"Error de Ingreso de Usuario", 
						JOptionPane.ERROR_MESSAGE);
		    }
	
		
		if (ae.getSource()== vistaEst.btnBuscar){	
			boolean cedulaValida;
			if (!vistaEst.txtCedula.getText().equals("")) {
				cedulaValida=this.validarCedula(vistaEst.txtCedula.getText());
				if(cedulaValida){
				    if(principal.seccion.buscar(vistaEst.txtCedula.getText())){
					try {
						Alumno=principal.seccion.obtenerEstudiante(vistaEst.txtCedula.getText());
					} catch (IOException e) {
						e.printStackTrace();
					}
					vistaEst.txtNombre.setText(Alumno.getNom());
					vistaEst.txtApellido.setText(Alumno.getApe());
					vistaEst.txtNotaFinal.setText(String.valueOf(Alumno.getNfinal()));
					vistaEst.btnRetirar.setEnabled(true);
					vistaEst.btnLimpiar.setEnabled(true);
					JOptionPane.showMessageDialog(null, "El estudiante ya se encuantra registrado", 
							"Informacion del registro", 
							JOptionPane.INFORMATION_MESSAGE);
					
				    }
				        else{
					    vistaEst.btnBuscar.setEnabled(false);
					    this.activar();
					    vistaEst.txtCedula.setEditable(false);
					    vistaEst.txtApellido.setEditable(true);
					    vistaEst.txtNombre.setEditable(true);
					    vistaEst.txtNombre.requestFocus(true);
					    JOptionPane.showMessageDialog(null, "El Estudiante no se encuentra registrado", 
						"Informacion de Busqueda", 
						JOptionPane.INFORMATION_MESSAGE);
					    }
				}
				    else{
				    	 JOptionPane.showMessageDialog(null, "Introduzca un numero de cedula valido", 
									"Informacion de Busqueda", 
									JOptionPane.INFORMATION_MESSAGE);
				    	 vistaEst.txtCedula.setText("");
				    	 vistaEst.txtCedula.requestFocus(true);
				    	 
				    }
			}
			else
			JOptionPane.showMessageDialog(null, "Debes introducir un nro de cedula", 
					"Informacion de Busqueda", 
					JOptionPane.INFORMATION_MESSAGE);
		     
		}
		if (ae.getSource()== vistaEst.btnRetirar){
			   int pos;
			   if (!vistaEst.txtCedula.getText().equals("")) {
			      if(principal.seccion.buscar(vistaEst.txtCedula.getText())){
				     pos=principal.seccion.buscarPosicion(vistaEst.txtCedula.getText());
					 try {
						 principal.seccion.retirarEstudiante(pos);
					 } catch (IOException e) {
					 e.printStackTrace();
					 }
					JOptionPane.showMessageDialog(null, "El Estudiante ha sido retirado satisfactoriamente", 
							"Informacion de Retiro", 
							JOptionPane.INFORMATION_MESSAGE);
			
		          }
			      else
			    	  JOptionPane.showMessageDialog(null, "El estudiante no se encuentra inscrito  en la seccion", 
								"Informacion al buscar estudiante", 
								JOptionPane.INFORMATION_MESSAGE);
			}
			}
	}
	
	//Metodo limpiar
	private void limpiar() {
		vistaEst.txtCedula.setEditable(true);
		vistaEst.btnBuscar.setEnabled(true);
		vistaEst.txtCedula.setText("");
		vistaEst.txtNombre.setText("");
		vistaEst.txtApellido.setText("");
		vistaEst.txtNotaFinal.setText("");
		this.desActivar();
	}
	private void desActivar(){
		vistaEst.txtNombre.setEnabled(false);
		vistaEst.txtApellido.setEnabled(false);
		vistaEst.btnLimpiar.setEnabled(false);
		vistaEst.btnRegistrar.setEnabled(false);
		vistaEst.btnRetirar.setEnabled(false);
		vistaEst.txtCedula.requestFocus(true);
		vistaEst.lblAsterisco1.setVisible(false);
		vistaEst.lblAsterisco2.setVisible(false);
	}
	private void activar(){
		vistaEst.txtNombre.setEnabled(true);
		vistaEst.txtApellido.setEnabled(true);
		vistaEst.btnLimpiar.setEnabled(true);
		vistaEst.btnRegistrar.setEnabled(true);
		vistaEst.btnRetirar.setEnabled(true);
		vistaEst.txtNombre.requestFocus(true);
	}
	
	//Metodo validarCampos
	private boolean validarCampos()
	{
		boolean sw= false;
		if ((!vistaEst.txtCedula.getText().equals("")) && (!vistaEst.txtNombre.getText().equals("")) && (!vistaEst.txtApellido.getText().equals("")))
		    sw=true;
		else{
			if(vistaEst.txtNombre.getText().equals("")){
				vistaEst.lblAsterisco1.setVisible(true);
				vistaEst.lblAsterisco1.setForeground(Color.RED);
			}
			else{
				vistaEst.lblAsterisco2.setVisible(true);
		        vistaEst.lblAsterisco2.setForeground(Color.RED);
	           }	
		}
		return sw;
	}
	
	
	public void windowClosing(WindowEvent e) {
		Window w = (Window) e.getSource();
		w.setVisible(false);
		w.dispose();
		System.out.println("Se cerro la Aplicacion!!!");
		System.exit(0);
	}
	private boolean validarCedula(String Ced){
		boolean valida=false;
		int resp;
		String numero="VEve-0123456789";
		char caracter;
		if(Ced.length()==10){
	    for(int i=0;i<Ced.length();i++){
	    	caracter=Ced.charAt(i);
	        resp=numero.indexOf(caracter);
	    	if(resp!=-1)
	    	valida=true;
	      }
		}
		return valida;
			
	}
	private boolean validarCaracteres(String campos){
		boolean valida=true;
		int resp;
		String numero="0123456789";
		char caracter;
	    for(int i=0;i<campos.length();i++){
	    	caracter=campos.charAt(i);
	        resp=numero.indexOf(caracter);
	    	if(resp!=-1)
	    	valida=false;
	      }
		return valida;
			
	}
	
}
